package lib;

/**
 *
 * using 这个库可以使用 ( int | string ).xxxx 的函数扩展
 * @author ...
 */
class TypeHelp {
	/**
	 * 替换文本
	 * @param	sub 目标
	 * @param	by 结果
	 * @return
	 */
	public static function replace(s:String, sub:String, by:String):String {
		return s.split(sub).join(by);
	}

	public static function toFixed(n:Float, s:Int):String {
		var startStr = Math.floor(n);
		var endStr = toString(n % 1);
		return (startStr + "." + endStr.substr(2, s));
	}

	/**
	 * 小数到文本
	 * @return
	 */
	public static function toString(n:Float):String {
		return Std.string(n);
	}

	/**
	 * 小数到整数
	 * @return
	 */
	public static function toInt(n:Float):Int {
		return Std.int(n);
	}

	/**
	 * 转换为小数
	 * @return
	 */
	public static function parseFloat(n:String):Float {
		return Std.parseFloat(n);
	}

	/**
	 * 转换为文本
	 * @return
	 */
	public static function parseInt(n:Dynamic):Int {
		return Std.parseInt(n);
	}

	/**
	 * 随机文本
	 * @return
	 */
	public static function randomStr(n:String, len:Int = 16):String {
		var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678oOLl9gqVvUuI1';
		var maxPos = chars.length;
		var str = '';
		for (i in 0...len) {
			str += chars.charAt(Math.floor(Math.random() * maxPos));
		}
		return str;
	}

	/**
	 * 获取成员 用于垮语言 xxx[x] 用
	 * @param n
	 * @param has 成员
	 * @return Int
	 */
	public static function ele(n:Dynamic, has:String):Dynamic {
		var rs:Dynamic = untyped __js__('n[{0}]', has);
		return rs;
	}

	public static function isNull(n:Dynamic, ?rep:Dynamic):Dynamic {
		untyped if (!n) {
			if (rep == null) {
				return true;
			}
			return rep;
		}
		return n;
	}
}
